/*******************************************************************************
* Copyright (c) 2016 Red Hat Inc. and others
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Mickael Istria (Red Hat Inc,)
*******************************************************************************/
package org.eclipse.jface.tests.images;
import static org.junit.Assert.assertNotEquals;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.ImageRegistry;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.viewers.DecorationOverlayIcon;
import org.eclipse.jface.viewers.IDecoration;
import org.eclipse.swt.graphics.Image;
import org.junit.Before;
import junit.framework.TestCase;
/**
* @since 3.13
*/
public class DecorationOverlayIconTest extends TestCase {
private static ImageDescriptor baseDescriptor1;
private static Image baseImage1;
private static ImageDescriptor baseDescriptor2;
private static Image baseImage2;
private static ImageDescriptor overlayDescriptor1;
private static ImageDescriptor overlayDescriptor2;
@Override
@Before
public void setUp() {
ImageRegistry imageRegistry = JFaceResources.getImageRegistry();
baseImage1 = imageRegistry.get(Dialog.DLG_IMG_HELP);
assertNotNull(baseImage1);
baseDescriptor1 = imageRegistry.getDescriptor(Dialog.DLG_IMG_HELP);
assertNotNull(baseDescriptor1);
baseImage2 = imageRegistry.get(Dialog.DLG_IMG_MESSAGE_ERROR);
assertNotNull(baseImage2);
baseDescriptor2 = imageRegistry.getDescriptor(Dialog.DLG_IMG_MESSAGE_ERROR);
assertNotNull(baseDescriptor2);
overlayDescriptor1 = imageRegistry.getDescriptor(Dialog.DLG_IMG_MESSAGE_INFO);
assertNotNull(overlayDescriptor1);
overlayDescriptor2 = imageRegistry.getDescriptor(Dialog.DLG_IMG_MESSAGE_WARNING);
assertNotNull(overlayDescriptor2);
}
public void testEqualsAndHashCode() {
// same base and overlay
DecorationOverlayIcon icon1 = new DecorationOverlayIcon(baseImage1,
new ImageDescriptor[] { overlayDescriptor1, overlayDescriptor2 });
DecorationOverlayIcon icon2 = new DecorationOverlayIcon(baseImage1,
new ImageDescriptor[] { overlayDescriptor1, overlayDescriptor2 });
assertTrue(icon1.equals(icon2));
assertEquals(icon1.hashCode(), icon2.hashCode());
//
icon1 = new DecorationOverlayIcon(baseDescriptor1, overlayDescriptor1, IDecoration.TOP_LEFT);
icon2 = new DecorationOverlayIcon(baseDescriptor1, overlayDescriptor1, IDecoration.TOP_LEFT);
assertTrue(icon1.equals(icon2));
assertEquals(icon1.hashCode(), icon2.hashCode());
// same base, different overlays
icon1 = new DecorationOverlayIcon(baseImage1, new ImageDescriptor[] { overlayDescriptor2 });
icon2 = new DecorationOverlayIcon(baseImage1, new ImageDescriptor[] { overlayDescriptor1 });
assertFalse(icon1.equals(icon2));
assertNotEquals(icon1.hashCode(), icon2.hashCode());
//
icon1 = new DecorationOverlayIcon(baseDescriptor1, overlayDescriptor1, IDecoration.TOP_LEFT);
icon2 = new DecorationOverlayIcon(baseDescriptor1, overlayDescriptor2, IDecoration.TOP_LEFT);
assertFalse(icon1.equals(icon2));
assertNotEquals(icon1.hashCode(), icon2.hashCode());
// same overaly, different bases
icon1 = new DecorationOverlayIcon(baseImage1, new ImageDescriptor[] { overlayDescriptor2 });
icon2 = new DecorationOverlayIcon(baseImage2, new ImageDescriptor[] { overlayDescriptor2 });
assertFalse(icon1.equals(icon2));
assertNotEquals(icon1.hashCode(), icon2.hashCode());
//
icon1 = new DecorationOverlayIcon(baseDescriptor1, overlayDescriptor2, IDecoration.TOP_LEFT);
icon2 = new DecorationOverlayIcon(baseDescriptor2, overlayDescriptor2, IDecoration.TOP_LEFT);
assertFalse(icon1.equals(icon2));
assertNotEquals(icon1.hashCode(), icon2.hashCode());
// one descriptor, other image
icon1 = new DecorationOverlayIcon(baseImage1, overlayDescriptor2, IDecoration.TOP_LEFT);
icon2 = new DecorationOverlayIcon(baseDescriptor1, overlayDescriptor2, IDecoration.TOP_LEFT);
assertFalse(icon1.equals(icon2));
assertNotEquals(icon1.hashCode(), icon2.hashCode());
}
}